function minWindow(s, t) {
    var map = new Map();
    for (var i = 0; i < t.length; i++) {
        if (map.has(t[i])) {
            var count = map.get(t[i]) + 1;
            map.set(t[i], count);
        }
        else {
            map.set(t[i], 1);
        }
    }
    var l = 0, need = t.length, res = '';
    for (var r = 0; r < s.length; r++) {
        if (map.has(s[r])) {
            if (map.get(s[r]) > 0) {
                need--;
            }
            var count = map.get(s[r]) - 1;
            map.set(s[r], count);
        }
        if (need == 0) {
            while (need == 0) {
                if (map.has(s[l])) {
                    var count = map.get(s[l]) + 1;
                    map.set(s[l], count);
                    if (count > 0) {
                        need++;
                    }
                }
                l++;
            }
            var newRes = s.slice(l, r + 1);
            res = (res && (res.length < newRes.length)) ? res : newRes;
        }
    }
    return res;
}
;
